<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>LZXリファレンス datapointer</title>
  <othercredit role="translator">
    <firstname>Atuo</firstname>
    <surname>Seki</surname>
        <contrib>2006/05/09　翻訳初版</contrib>
 </othercredit>
<link rel="STYLESHEET" type="text/css" href="../lps/includes/styles.css" /></head>
<body>

<!-- ===================================================================== -->
<!-- = XML information goes here                                         = -->
<!-- ===================================================================== -->
<lzelement title="Datapointer">
    <lztier>LFC</lztier>
    <lzcategory>Data</lzcategory>
    <lzshortdesc>
            データセットのカーソル。
    </lzshortdesc>
    <lztag>tag-datapointer.xml</lztag>
    <lzapi>api-lzdatapointer.xml</lzapi>
    <seealso>dataset</seealso>
</lzelement>

<p>
datapointerは<classname>LzDataset</classname>のノードポインターを表す物です。
datapointerは<a href="#meth-selectNext">selectNext</a>のようにカーソルを呼び出すか、
XPathの<a href="#meth-setXPath">setXPath</a>によってリクエストするかの
どちらかで位置を変える事ができます。
</p>

<p>
Datapointerは<a href="http://www.w3.org/TR/xpath">XPath</a>をサポートしています。
(ノードを参照するのにUNIXファイルシステムと同様の記法を使う仕様です)
いったんdatapointerがデータセットのノードを指し示すと、それは動かされるまでそのノードを示し続けるでしょう。
データセットが編集された場合、<a href="#attr-rerunxpath">rerunxpath</a>属性によって
datapointerの動きは制御されます。その属性がtrue(デフォルトではtrue)である限り、
現在のノードを示し続けるでしょう。
</p>

<p>以下の例はdatapathがデータセットからデータを検索するいくつかの使用法の特徴を示しています。
</p>

<example title="Using a datapointer to retrieve data from a dataset">
&lt;canvas height="80"&gt;
  &lt;simplelayout spacing="5"/&gt;
  &lt;dataset name="mydata"&gt;
    &lt;record&gt; This is some text 
      &lt;deeper&gt;
        &lt;deeprecord&gt; This is a deeper level &lt;/deeprecord&gt;
        &lt;deeprecord&gt; It's dark down here! &lt;/deeprecord&gt;
        &lt;deeprecord&gt; Last deep record &lt;/deeprecord&gt;
      &lt;/deeper&gt;
    &lt;/record&gt;
    &lt;record&gt; This is more text &lt;/record&gt;
    &lt;record&gt; Exciting no? &lt;/record&gt;
    &lt;record&gt; The final line of text &lt;/record&gt;
  &lt;/dataset&gt;

  &lt;view&gt;
    &lt;simplelayout/&gt;
    <em>&lt;datapointer id="mydp" xpath="mydata:/record[1]"/&gt;</em>
    &lt;button&gt; Move forward with select
      &lt;method event="onclick"&gt;
        if (mydp.selectNext()) var s = <em>mydp.getNodeText();</em>
        else var s = "hit last record; reset with xpath";
        output.setText(s);
      &lt;/method&gt;
    &lt;/button&gt;
    &lt;button&gt; Set with XPath
      &lt;method event="onclick"&gt;
          if (mydp.getNodeName() == "record")
            var xp = <em>"mydata:/record[1]/deeper/deeprecord[1]";</em>
          else var xp = <em>"mydata:/record[1]";</em>
          <em>mydp.setXPath( xp );</em> output.setText(<em>mydp.getNodeText()</em>);
      &lt;/method&gt;
    &lt;/button&gt;
  &lt;/view&gt;

  &lt;text name="output" width="200"&gt;Data will appear here.&lt;/text&gt;
&lt;/canvas&gt;
</example>
</body>
</html>
<!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
* Copyright 2001-2004 Laszlo Systems, Inc.  All Rights Reserved.              *
* Use is subject to license terms.                                            *
* X_LZ_COPYRIGHT_END ****************************************************** -->
